home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Technotools
/
Technotools (Chestnut CD-ROM)(1993).ISO
/
lang_c
/
cug106
/
bspat1-4.doc
< prev
next >
Wrap
Text File
|
1984-06-14
|
3KB
|
106 lines
; TITLE 'Skeleton BIOS for CP/M Version 1.4 w/ Back Space Patch'
;
MSIZE EQU 48 ; SYSTEM MEMORY SIZE IN DECIMAL K BYTES
;
;
; Features added or modified by H.R.Moran 10/2/72..10/15/79
;
; The BDOS is patched at both cold and warm boot
; to handle a backspace for a CRT properly when
; the BDOS function read console buffered is used.
; This does not intefere with the operation of anyone
; else's (e.g. MICROSOFT,XITAN,WPDAISY) trapping of
; the backspace handling. This feature is conditionally
; assembled in under control of the CRT switch.
;
; This method has one drawback. MOVCPM will not
; work properly under a system with this patch
; installed, it dies after indicating synchronization
; error. Therefore, you must keep at least one
; copy of an unpatched system around to generate
; new system sizes.
;
;
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
; ! !
; ! THE LABEL 'BDOS' IN THIS EXAMPLE IS THE PLACE !
; ! YOU JUMP TO IN TURNING CONTROL OVER TO THE CCP !
; ! NOT THE BEGINNING OF CP/M AS IS THE CASE IN !
; ! SOME OTHER EXAMPLE BIOS'S. THAT IS THE 'BDOS' !
; ! IN THIS CODE IS 6 GREATER THAN THE BEGINNING !
; ! OF CP/M. !
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;
; * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * *
; * SYMBOL DEFINITIONS AND EQUATES *
; * *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * *
TRUE EQU 0FFFFH
FALSE EQU NOT TRUE
;
;
BELL EQU 7 ;ring-a-ding-ding
BS EQU 8 ;BACKSPACE
TAB EQU 9 ;TAB
LF EQU 0AH ;LINEFEED
CR EQU 0DH ;CARRIAGE RETURN
;
;
CRT EQU TRUE ; CONTROLS BACKSPACE/DELETE
; (IF TRUE, RUBOUT CAUSES BACKSPACE
; IF FALSE, RUBOUT CAUSES ECHO.)
PATCH EQU MSIZE*1024-2*256 ;START OF THE CBIOS
;
ORG PATCH ;ORIGIN OF THIS PROGRAM
;
CBASE EQU (MSIZE-16)*1024 ;BIAS FOR SYSTEMS LARGER THAN 16K
CPMB EQU CBASE+2700H ;BASE OF CP/M (= BASE OF CCP)
CCP EQU CPMB ;alias
BDOS EQU CBASE+2F06H ;BASE OF RESIDENT PORTION OF CP/M
CPML EQU $-CPMB ;LENGTH OF THE CP/M SYSTEM IN BYTES
NSECTS EQU CPML/128 ;NO. OF SECTS TO LOAD ON WBOOT
;
;
; * JUMP VECTOR FOR INDIVIDUAL SUBROUTINES
;
JMP BOOT ;COLD START
WBOOTE:
JMP WBOOT ;WARM START
JMP CONST ;CONSOLE STATUS
JMP CONIN ;CONSOLE CHARACTER IN
JMP CONOUT ;CONSOLE CHARACTER OUT
JMP LIST ;LIST CHARACTER OUT
JMP PUNCH ;PUNCH CHARACTER OUT
JMP READER ;READER CHARACTER OUT
JMP HOME ;MOVE HEAD TO HOME POSITION
JMP SELDSK ;SELECT DISK
JMP SETTRK ;SET TRACK NUMBER
JMP SETSEC ;SET SECTOR NUMBER
JMP SETDMA ;SET DMA ADDRESS
JMP READ ;READ DISK
JMP WRITE ;WRITE DISK
;
BOOT:
LXI SP, 0100H ; FIRST SET UP STACK POINTER
;
; PERFORM I/O INITIALIZATION HERE, IF NESSECARY
;
LXI H, SMSG ; PRINT SIGNON MESSAGE
CALL PMSG
;
XRA A
STA IOBYTE ; CLEAR THE IOBYTE
STA CDISK ; ALSO SET THE DEFAULT DISK TO A:
;
MVI A,031H ; SELECT DRIVE A: FOR FUTURE OPERATIONS
STA SELECT
;
JMP GOCPM ;INITIALIZE AND GO TO CP/M
;
WBOOT: ; RELOAD THE OPERATING SYSTEM FROM DISK